package com.hujing.io;

/**
 * @Author : hujing
 * @Date: 2025/8/26 14:12
 * @Description:
 */
import org.apache.poi.hslf.usermodel.HSLFSlideShow;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class PPTConverter {

    /**
     * 将 PPT 文件转换为 PPTX 文件
     * @param inputFilePath 输入 PPT 文件路径
     * @param outputFilePath 输出 PPTX 文件路径
     * @throws IOException 如果文件处理过程中出现错误
     */
    public static void convertPPTToPPTX(String inputFilePath, String outputFilePath) throws IOException {
        try (InputStream inputStream = new FileInputStream(inputFilePath);
             HSLFSlideShow ppt = new HSLFSlideShow(inputStream);
             XMLSlideShow pptx = new XMLSlideShow()) {

            // 将 PPT 的所有幻灯片添加到 PPTX
            for (org.apache.poi.hslf.usermodel.HSLFSlide slide : ppt.getSlides()) {
                XSLFSlide newSlide = pptx.createSlide();
                // 这里可以添加更复杂的转换逻辑，如复制内容等
                // 简单转换只创建空幻灯片，保持相同数量
            }

            // 保存为 PPTX 文件
            try (OutputStream out = new FileOutputStream(outputFilePath)) {
                pptx.write(out);
            }
        }
    }

    /**
     * 从 URL 下载 PPT 文件并转换为 PPTX
     * @param fileUrl 文件的 URL 地址
     * @param outputFilePath 输出 PPTX 文件路径
     * @throws IOException 如果网络请求或文件处理过程中出现错误
     */
    public static void convertPPTFromUrlToPPTX(String fileUrl, String outputFilePath) throws IOException {
        // 使用 Java 标准库下载文件
        try (InputStream inputStream = new java.net.URL(fileUrl).openStream();
             HSLFSlideShow ppt = new HSLFSlideShow(inputStream);
             XMLSlideShow pptx = new XMLSlideShow()) {

            // 将 PPT 的所有幻灯片添加到 PPTX
            for (org.apache.poi.hslf.usermodel.HSLFSlide slide : ppt.getSlides()) {
                pptx.createSlide(); // 简单创建空幻灯片
            }

            // 保存为 PPTX 文件
            try (OutputStream out = new FileOutputStream(outputFilePath)) {
                pptx.write(out);
            }
        }
    }

    public static void main(String[] args) {
        // 测试 URL 文件转换（使用你提供的 URL）
        try {
            String fileUrl = "http://192.168.100.4:32000/uniwim/uploads/2025/8/20cdd511da444f1d89e1d9efbc690249.ppt";
            String outputFile = "downloaded_and_converted.pptx";
            convertPPTFromUrlToPPTX(fileUrl, outputFile);
            System.out.println("URL 文件转换成功: " + fileUrl + " -> " + outputFile);
        } catch (IOException e) {
            System.err.println("URL 文件转换失败: " + e.getMessage());
        }
    }
}
